package com.psmorandi.peschampweb.android.tab.adapters;

import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.psmorandi.peschampweb.android.R;
import com.psmorandi.peschampweb.android.model.PartidaJogadorVirtual;

public class LinhaJogadorVirtualAdapter extends
		ArrayAdapter<PartidaJogadorVirtual> {

	private List<PartidaJogadorVirtual> mLstPartidaJogVirtual;
	private int mLayoutResourceId;
	private final LayoutInflater mInflater;

	public LinhaJogadorVirtualAdapter(Context context, int layoutResourceId,
			List<PartidaJogadorVirtual> lstPartidaVirtual) {
		super(context, layoutResourceId, lstPartidaVirtual);
		mInflater = LayoutInflater.from(context);
		this.mLayoutResourceId = layoutResourceId;
		this.mLstPartidaJogVirtual = lstPartidaVirtual;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		View linha = convertView;
		JogVirtualHolder holder = null;

		if (linha == null) {
			linha = mInflater.inflate(mLayoutResourceId, parent, false);

			holder = new JogVirtualHolder();
			holder.txtNomeJogadorVirtual = (TextView) linha
					.findViewById(R.id.txt_lst_reg_acao_nome_jog_virt);
			holder.txtQtdeGols = (TextView) linha
					.findViewById(R.id.txt_lst_reg_acao_qtde_gols);
			holder.imgGol = (ImageView) linha
					.findViewById(R.id.img_reg_acao_bola_fut);
			holder.imgCartaoAmarelo = (ImageView) linha
					.findViewById(R.id.img_reg_acao_cart_am);
			holder.imgCartaoAmarelo2 = (ImageView) linha
					.findViewById(R.id.img_reg_acao_cart_am2);
			holder.imgCartaoVermelho = (ImageView) linha
					.findViewById(R.id.img_reg_acao_cart_ver);

			linha.setTag(holder);
		} else {
			holder = (JogVirtualHolder) linha.getTag();
		}

		PartidaJogadorVirtual partidaJogVirt = mLstPartidaJogVirtual
				.get(position);

		holder.txtNomeJogadorVirtual.setText(partidaJogVirt.getJogadorVirtual()
				.getNome());

		if (partidaJogVirt.getQtdeGolsMarcados() > 0) {
			holder.imgGol.setVisibility(View.VISIBLE);
			holder.txtQtdeGols.setVisibility(View.VISIBLE);
			holder.txtQtdeGols.setText(String.valueOf(partidaJogVirt
					.getQtdeGolsMarcados()));
		} else {
			holder.imgGol.setVisibility(View.INVISIBLE);
			holder.txtQtdeGols.setVisibility(View.INVISIBLE);
		}

		if (partidaJogVirt.getCartoesAmarelos() > 0) {
			holder.imgCartaoAmarelo.setVisibility(View.VISIBLE);

			if (partidaJogVirt.getCartoesAmarelos() == 2) {
				holder.imgCartaoAmarelo2.setVisibility(View.VISIBLE);
			} else {
				holder.imgCartaoAmarelo2.setVisibility(View.INVISIBLE);
			}
		} else {
			holder.imgCartaoAmarelo.setVisibility(View.INVISIBLE);
			holder.imgCartaoAmarelo2.setVisibility(View.INVISIBLE);
		}

		if (partidaJogVirt.isRecebeuCartaoVermelho()) {
			holder.imgCartaoVermelho.setVisibility(View.VISIBLE);
		} else {
			holder.imgCartaoVermelho.setVisibility(View.INVISIBLE);
		}

		return linha;
	}

	public void addOrUpdateItem(PartidaJogadorVirtual _partJog) {
		PartidaJogadorVirtual partJogEncontrada = this
				.buscarPartidaJogadorVirtual(_partJog);
		if (partJogEncontrada != null) {
			partJogEncontrada.setCartoesAmarelos(partJogEncontrada
					.getCartoesAmarelos() + _partJog.getCartoesAmarelos());
			partJogEncontrada.setRecebeuCartaoVermelho(_partJog
					.isRecebeuCartaoVermelho());
			partJogEncontrada.setQtdeGolsMarcados(partJogEncontrada
					.getQtdeGolsMarcados() + _partJog.getQtdeGolsMarcados());
		} else {
			mLstPartidaJogVirtual.add(_partJog);
		}
		this.notifyDataSetChanged();
	}

	private PartidaJogadorVirtual buscarPartidaJogadorVirtual(
			PartidaJogadorVirtual _partJog) {
		for (PartidaJogadorVirtual partJogVirt : mLstPartidaJogVirtual) {
			if (partJogVirt.getJogadorVirtual().getNome()
					.equals(_partJog.getJogadorVirtual().getNome())) {
				return partJogVirt;
			}
		}
		return null;
	}

	static class JogVirtualHolder {
		long jogVirtualID;
		TextView txtNomeJogadorVirtual;
		TextView txtQtdeGols;
		ImageView imgGol;
		ImageView imgCartaoAmarelo;
		ImageView imgCartaoAmarelo2;
		ImageView imgCartaoVermelho;
	}

}
